import java.util.*;

public class Test {

    public static List<List<Integer>> generate(int nums){
        //杨辉三角
        List<List<Integer>> ret = new ArrayList<>();
        List<Integer> list0 = new ArrayList<>();
        list0.add(1);
        ret.add(list0);
        for (int i = 0; i < nums; i++){
            List<Integer> curRow = new ArrayList<>();
            //
            list0.add(1);
            //
            List<Integer> preRow = new ArrayList<>();
            for (int j = 0; j < i; j++) {
                int x = preRow.get(j) + preRow.get(j-1);
                curRow.add(x);
            }
            //
            list0.add(1);
            ret.add(curRow);
        }
        return ret;
    }

    public static void main(String[] args) {

    }
    public static void main4(String[] args) {
        ArrayList<Integer> list0 = new ArrayList<>();
        list0.add(1);
        list0.add(2);
        list0.add(3);
        list0.add(4);
        list0.add(5);
        list0.add(6);
        //ArrayList的遍历
        // 1.for
        for (int i = 0; i <list0.size(); i++) {
            Integer a = list0.get(i);
            System.out.print(a +" ");
        }
        System.out.println();
        System.out.println("===============");
        //2.for each
        for (int x:list0) {
            System.out.print(x +" ");
        }
        System.out.println();
        //3.迭代器
        System.out.println("=====迭代器1====");
        Iterator<Integer> it1 = list0.iterator();
        while (it1.hasNext()){
            System.out.print(it1.next()+" ");
        }
        System.out.println();
        System.out.println("=====迭代器2====");
        ListIterator<Integer> it2 = list0.listIterator();
        while (it2.hasNext()){
            System.out.print(it2.next()+" ");
        }
        System.out.println();
        System.out.println("=====迭代器3====");
        //反向遍历
        ListIterator<Integer> it3 = list0.listIterator(list0.size());
        while (it3.hasPrevious()){
            System.out.print(it3.previous()+" ");
        }



    }

    public static void main3(String[] args) {
        ArrayList<Integer> list0 = new ArrayList<>();
        list0.add(1);
        list0.add(2);
        list0.add(3);
        list0.add(4);
        Integer ij = 3;
        list0.remove(ij);
        System.out.println(list0);
        list0.set(0,99);
        System.out.println(list0);
        list0.subList(0,3);//左闭右开
        System.out.println(list0);
    }


    public static void main2(String[] args) {
        ArrayList<Integer> list0 = new ArrayList<>();
        list0.add(1);
        list0.add(2);
        list0.add(3);
        list0.add(4);
        //list0.remove(2);
        System.out.println(list0);
        Integer ii = 2;
        list0.remove(ii);
        System.out.println(list0);
        list0.clear();//清空
        System.out.println(list0);
    }



    public static void main1(String[] args) {
        ArrayList<Integer> list0 = new ArrayList<>();
        list0.add(1);
        list0.add(2);
        list0.add(3);
        System.out.println(list0);
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("yy");
        list1.add("xx");
        list1.add("yx");
        //list1.addAll();
        System.out.println(list1);
        ArrayList<Integer> list2 = new ArrayList<>();
        list2.addAll(list0);
        System.out.println(list0);
    }
}
